package com.xjscrm.server.service.msg;

import com.xjscrm.common.entity.WwCustomer;
import com.xjscrm.common.vo.grouppull.GroupPullMsgData;
import com.xjscrm.common.vo.msg.MsgData;
import com.xjscrm.server.vo.device.Device;

import java.util.List;

/**
 * 发送消息接口
 *
 * @author makejava
 * @since 2024-03-01 17:01:12
 */
public interface MsgSendService {

    /**
     * 发送消息接口
     *
     * @param device 机器人信息
     * @return 实例对象
     */
    void msgSend(Device device, String wxid, String nickName, List<MsgData> msgDatas, boolean atAll, List<String> atWxIds, int msgsource, Boolean group);


    /**
     * 发送消息接口
     *
     * @param difDelay 延迟时间的偏差值
     * @param device   机器人信息
     * @return 实例对象
     */
    void msgSend(Device device, String wxid, String nickName, MsgData msgData, boolean atAll, List<String> atWxIds, int difDelay, int msgsource, Boolean group);

    /**
     * 发送拉群消息接口
     *
     * @param device 机器人信息
     * @return 实例对象
     */
    void groupPullMsgSend(Long merId, Device device, WwCustomer wwCustomer, List<GroupPullMsgData> groupPullMsgDataList, Integer type, Long planId, boolean atAll, List<String> atWxIds, int msgsource, Boolean group);

    /**
     * 发送新客户运营拉群消息接口
     *
     * @param device 机器人信息
     * @return 实例对象
     */
    void groupPullMsgSendForCustomerAdd(Long merId, Device device, WwCustomer wwCustomer, List<GroupPullMsgData> groupPullMsgDataList, Integer type, Long planId, boolean atAll, List<String> atWxIds, int msgsource, Boolean group);

    /**
     * 发送拉群消息接口
     *
     * @param difTime 延迟补偿偏差
     * @param device  机器人信息
     * @return 实例对象
     */
    void groupPullMsgSend(Long merId, Device device, String wxid, String nickName, GroupPullMsgData groupPullMsgData, Integer type, Long planId, boolean atAll, List<String> atWxIds, int difTime, int msgsource, Boolean group);

    /**
     * 发送拉群消息接口
     *
     * @param device 机器人信息
     * @return 实例对象
     */
    void groupPullMsgSendByFaqReplay(Long merId, Device device, String wxid, String nickName, List<GroupPullMsgData> groupPullMsgDataList, Integer type, Long planId, boolean atAll, List<String> atWxIds, int msgsource, Boolean group);

}
